package br.com.bonina.contabilidade.web;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.enterprise.inject.Model;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.inject.Inject;

import org.hibernate.criterion.Order;

import br.com.bonina.contabilidade.business.categoria.CategoriaFacade;
import br.com.bonina.contabilidade.core.BusinessException;
import br.com.bonina.contabilidade.model.Categoria;

@Model
@ManagedBean
public class CategoriaBean {

	@Inject
	private CategoriaFacade facade;
	private Categoria model;
	private List<Categoria> list;

	@PostConstruct
	public void init() {
		this.model = new Categoria();
		this.doList();
	}
	
	private void doList(){
		try {
			list = facade.findAllOrder(Categoria.class, Order.asc("descricao"));
			System.out.println(list);
		} catch (BusinessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void doSave(ActionEvent e) {
		try {
			if (model.getId() == null) {
				facade.save(model);
			} else {
				facade.update(model);
			}
			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, null, "salvo_sucesso");
			FacesContext.getCurrentInstance().addMessage(null, msg);
			model = new Categoria();
		} catch (BusinessException e1) {
			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "erro ao salvar " + e1.getMessage());
			FacesContext.getCurrentInstance().addMessage(null, msg);
		}
	}

	public Categoria getModel() {
		return model;
	}

	public void setModel(Categoria model) {
		this.model = model;
	}

	public List<Categoria> getList() {
		return list;
	}

	public void setList(List<Categoria> list) {
		this.list = list;
	}

}
